//synthesis translate_off
`timescale 1ns/1ps
//synthesis translate_on
module tb_PG;                  
reg                sys_clk;
reg                rst_n;
reg                DSP_core_en;
reg[4:0]           vision_PC;
reg                vision_PC_en;       
reg                S1_branch;
reg                S2_branch;
reg[4:0]           S1_branch_addr;
reg[4:0]           S2_branch_addr;
reg                Int_Sev;
reg[4:0]           Int_Sev_addr;
reg                DP_stall;
reg                I_FP_invalid;
reg                D_RAM_invalid;
wire               PG_io_invalid; 
wire[4:0]          PG_PC;

initial 
    sys_clk=1'b1;
    
always #10 sys_clk = ~sys_clk; 

//assignment
initial 
begin
//*********************--------assignment 1---------*********************//      
    //simulate 0
  #1        rst_n=1'b0;
          DSP_core_en=1'b1;
          vision_PC=32'b1;
          vision_PC_en=1'b1;
          S1_branch=1'b0;
          S2_branch=1'b0;
          S1_branch_addr=32'b0;
          S2_branch_addr=32'b0;
          Int_Sev=1'b0;
          Int_Sev_addr=32'b0;
          DP_stall=1'b0;
          I_FP_invalid=1'b0;
          D_RAM_invalid=1'b0;
      #20 //simulate 1
          rst_n=1'b1;
          DSP_core_en=1'b1;
          vision_PC=32'b1111;
          vision_PC_en=1'b0;
      #20 //simulate 1
          rst_n=1'b1;
          DSP_core_en=1'b1;
          vision_PC=32'b1111;
          vision_PC_en=1'b1;
       #20 //simulate 1
          rst_n=1'b1;
          DSP_core_en=1'b1;
          vision_PC=32'b1111;
          vision_PC_en=1'b1; 
        #20 //simulate 1
          rst_n=1'b1;
          DSP_core_en=1'b1;
          vision_PC=32'b1111;
          vision_PC_en=1'b0;     
      #20 //simulate 1
          rst_n=1'b1;
          DSP_core_en=1'b1;
          vision_PC=32'b1111;
          vision_PC_en=1'b1;
      #20 //simulate 2
          rst_n=1'b1;
          DSP_core_en=1'b1;
          vision_PC=32'b1111;
          vision_PC_en=1'b0;
          S1_branch=1'b1;
          S2_branch=1'b1;
          S1_branch_addr=32'b1110;
          S2_branch_addr=32'b1101;
      #20 //simulate 3
          rst_n=1'b1;
          DSP_core_en=1'b1;
          vision_PC=32'b1111;
          vision_PC_en=1'b0;
          S1_branch=1'b0;
          S2_branch=1'b1;
          S1_branch_addr=32'b1110;
          S2_branch_addr=32'b1101;         
      #20 //simulate 4
          rst_n=1'b1;
          DSP_core_en=1'b1;
          vision_PC=32'b1111;
          vision_PC_en=1'b0;
          S1_branch=1'b0;
          S2_branch=1'b0;
          S1_branch_addr=32'b1110;
          S2_branch_addr=32'b1101;
          Int_Sev=1'b1;
          Int_Sev_addr=32'b1100;
      #20 //simulate 5
          rst_n=1'b1;
          DSP_core_en=1'b1;
          vision_PC=32'b1111;
          vision_PC_en=1'b0;
          S1_branch=1'b0;
          S2_branch=1'b0;
          S1_branch_addr=32'b1110;
          S2_branch_addr=32'b1101;
          Int_Sev=1'b0;
          Int_Sev_addr=32'b1100;
          DP_stall=1'b1;
          I_FP_invalid=1'b0;
          D_RAM_invalid=1'b0;   
      #20 //simulate 6
          rst_n=1'b1;
          DSP_core_en=1'b1;
          vision_PC=32'b1111;
          vision_PC_en=1'b0;
          S1_branch=1'b0;
          S2_branch=1'b0;
          S1_branch_addr=32'b1110;
          S2_branch_addr=32'b1101;
          Int_Sev=1'b0;
          Int_Sev_addr=32'b1100;
          DP_stall=1'b1;
          I_FP_invalid=1'b1;
          D_RAM_invalid=1'b1;  
      #20   //simulate 7
          rst_n=1'b0;
          DSP_core_en=1'b1;
          vision_PC=32'b1;
          vision_PC_en=1'b1;
          S1_branch=1'b0;
          S2_branch=1'b0;
          S1_branch_addr=32'b0;
          S2_branch_addr=32'b0;
          Int_Sev=1'b0;
          Int_Sev_addr=32'b0;
          DP_stall=1'b0;
          I_FP_invalid=1'b0;
          D_RAM_invalid=1'b0;
      #20 //simulate 8
          rst_n=1'b1;
          DSP_core_en=1'b1;
          vision_PC=32'b1111;
          vision_PC_en=1'b1;
      #20 //simulate 9
          rst_n=1'b1;
          DSP_core_en=1'b1;
          vision_PC=32'b1111;
          vision_PC_en=1'b0;
          S1_branch=1'b1;
          S2_branch=1'b0;
          S1_branch_addr=32'b1110;
          S2_branch_addr=32'b1101;
      #20 //simulate 10
          rst_n=1'b1;
          DSP_core_en=1'b1;
          vision_PC=32'b1111;
          vision_PC_en=1'b0;
          S1_branch=1'b0;
          S2_branch=1'b1;
          S1_branch_addr=32'b1110;
          S2_branch_addr=32'b1101;         
      #20 //simulate 11
          rst_n=1'b1;
          DSP_core_en=1'b1;
          vision_PC=32'b1111;
          vision_PC_en=1'b0;
          S1_branch=1'b0;
          S2_branch=1'b0;
          S1_branch_addr=32'b1110;
          S2_branch_addr=32'b1101;
          Int_Sev=1'b1;
          Int_Sev_addr=32'b1100;
      #20 //simulate 12
          rst_n=1'b1;
          DSP_core_en=1'b1;
          vision_PC=32'b1111;
          vision_PC_en=1'b0;
          S1_branch=1'b0;
          S2_branch=1'b0;
          S1_branch_addr=32'b1110;
          S2_branch_addr=32'b1101;
          Int_Sev=1'b0;
          Int_Sev_addr=32'b1100;
          DP_stall=1'b1;
          I_FP_invalid=1'b0;
          D_RAM_invalid=1'b0;   
       #20 //simulate 13
          rst_n=1'b1;
          DSP_core_en=1'b1;
          vision_PC=32'b1111;
          vision_PC_en=1'b0;
          S1_branch=1'b0;
          S2_branch=1'b0;
          S1_branch_addr=32'b1110;
          S2_branch_addr=32'b1101;
          Int_Sev=1'b0;
          Int_Sev_addr=32'b1100;
          DP_stall=1'b0;
          I_FP_invalid=1'b0;
          D_RAM_invalid=1'b0; 
        #20 //simulate 14
          rst_n=1'b1;
          DSP_core_en=1'b1;
          vision_PC=32'b1111;
          vision_PC_en=1'b0;
          S1_branch=1'b0;
          S2_branch=1'b0;
          S1_branch_addr=32'b1110;
          S2_branch_addr=32'b1101;
          Int_Sev=1'b0;
          Int_Sev_addr=32'b1100;
          DP_stall=1'b0;
          I_FP_invalid=1'b0;
          D_RAM_invalid=1'b0; 
        #20 //simulate 15
          rst_n=1'b1;
          DSP_core_en=1'b0;
          vision_PC=32'b1111;
          vision_PC_en=1'b0;
          S1_branch=1'b1;
          S2_branch=1'b0;
          S1_branch_addr=32'b1110;
          S2_branch_addr=32'b1101;
          Int_Sev=1'b0;
          Int_Sev_addr=32'b1100;
          DP_stall=1'b0;
          I_FP_invalid=1'b0;
          D_RAM_invalid=1'b0;   
         #20 //simulate 16
          rst_n=1'b1;
          DSP_core_en=1'b1;
          vision_PC=32'b1111;
          vision_PC_en=1'b1;
          S1_branch=1'b0;
          S2_branch=1'b0;
          S1_branch_addr=32'b1110;
          S2_branch_addr=32'b1101;
          Int_Sev=1'b0;
          Int_Sev_addr=32'b1100;
          DP_stall=1'b0;
          I_FP_invalid=1'b0;
          D_RAM_invalid=1'b0;   
         #20 //simulate 17
          rst_n=1'b1;
          DSP_core_en=1'b1;
          vision_PC=32'b1111;
          vision_PC_en=1'b1;
          S1_branch=1'b0;
          S2_branch=1'b0;
          S1_branch_addr=32'b1110;
          S2_branch_addr=32'b1101;
          Int_Sev=1'b0;
          Int_Sev_addr=32'b1100;
          DP_stall=1'b0;
          I_FP_invalid=1'b0;
          D_RAM_invalid=1'b0;  
         #20 //simulate 18
          rst_n=1'b1;
          DSP_core_en=1'b1;
          vision_PC=32'b1111;
          vision_PC_en=1'b0;
          S1_branch=1'b0;
          S2_branch=1'b0;
          S1_branch_addr=32'b1110;
          S2_branch_addr=32'b1101;
          Int_Sev=1'b0;
          Int_Sev_addr=32'b1100;
          DP_stall=1'b0;
          I_FP_invalid=1'b0;
          D_RAM_invalid=1'b0;         
        #20 //simulate 19
          rst_n=1'b1;
          DSP_core_en=1'b1;
          vision_PC=32'b1111;
          vision_PC_en=1'b0;
          S1_branch=1'b0;
          S2_branch=1'b0;
          S1_branch_addr=32'b1110;
          S2_branch_addr=32'b1101;
          Int_Sev=1'b0;
          Int_Sev_addr=32'b1100;
          DP_stall=1'b0;
          I_FP_invalid=1'b0;
          D_RAM_invalid=1'b0;  
       #20 $stop(2);                                  
end
        
PG PG_compt_tb(   
               sys_clk,
               rst_n,
               DSP_core_en,
               vision_PC,
               vision_PC_en,
               S1_branch,
               S2_branch,
               S1_branch_addr,
               S2_branch_addr,
               Int_Sev,
               Int_Sev_addr,
               DP_stall,
               I_FP_invalid,
               D_RAM_invalid,
               PG_io_invalid,
               PG_PC,                       
               );

endmodule




   

